﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DiscoveryLogic.DataViz.NetworkDiagram.NetworkData;
using DiscoveryLogic.DataViz.NetworkDiagram.Rules;

namespace DiscoveryLogic.DataViz.NetworkDiagram.LinkerControls
{
    /// <summary>
    /// 
    /// </summary>
    public interface IEntityLinker
    {
        /// <summary>
        /// 
        /// </summary>
        List<string> ArgNames { get; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="srcEntityType"></param>
        /// <param name="tgtEntityType"></param>
        /// <param name="bindings"></param>
        void InitBindings(Type srcEntityType, Type tgtEntityType, Dictionary<string, ArgumentFieldBinding> bindings);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entity1"></param>
        /// <param name="entity2"></param>
        /// <returns></returns>
        double? CalculateDistance(BaseEntity entity1, BaseEntity entity2);
    }
}
